package org.lxy.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.PutObjectRequest;
import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.net.SocketException;
import java.util.UUID;

/**
 * @author 卢心怡
 */
public class UploadUtils {


    private final String rootUrl = "http://120.77.156.103/usr/local/imgs/recycling-goods/";

   /* public static String fileUploadToOss() {
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        String endpoint = "yourEndpoint";
// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = "yourAccessKeyId";
        String accessKeySecret = "yourAccessKeySecret";

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 创建PutObjectRequest对象。
// 填写Bucket名称、Object完整路径和本地文件的完整路径。Object完整路径中不能包含Bucket名称。
// 如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
        PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampleobject.txt", new File("D:\\localpath\\examplefile.txt"));

// 如果需要上传时设置存储类型和访问权限，请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);

// 上传文件。
        ossClient.putObject(putObjectRequest);

// 关闭OSSClient。
        ossClient.shutdown();
    }

    public static String fileUpload(MultipartFile file) {
        if (file.isEmpty()) {
            return "";
        }
        //获取项目classes/static的地址
        String staticPath = ClassUtils.getDefaultClassLoader().getResource("static").getPath();

        //设置图片上传后相对路径
        String uuid = UUID.randomUUID().toString();
        String img_path = "images" + File.separator + "root" + File.separator + uuid;
        String realPath = staticPath + img_path;
        File dest = new File(realPath);
        //String fileName = file.getOriginalFilename();
        //File dest = new File(new File(staticPath).getAbsolutePath()+ "/" + fileName);
        if (!dest.exists()) {
            dest.mkdirs();
        }
        try {
            file.transferTo(dest);
            return img_path;
        } catch (Exception e) {
            e.printStackTrace();
            return "";
        }
    }
*/

    /*//FTP文件上传
    public static String upload(String hostname,String username,String password,
                                String targetPath,String suffix,InputStream inputStream) throws SocketException, IOException {
        //实例化ftpClient
        FTPClient ftpClient = new FTPClient();
        //设置登陆超时时间,默认是20s
        ftpClient.setDataTimeout(12000);
        //1.连接服务器
        ftpClient.connect(hostname,21);
        //2.登录（指定用户名和密码）
        boolean b = ftpClient.login(username,password);
        if(!b) {
            System.out.println("登陸超時");
            if (ftpClient.isConnected()) {
                // 断开连接
                ftpClient.disconnect();
            }
        }
        // 设置字符编码
        ftpClient.setControlEncoding("UTF-8");
        //基本路径，一定存在
        String basePath="/";
        String[] pathArray = targetPath.split("/");
        for(String path:pathArray){
            basePath+=path+"/";
            //3.指定目录 返回布尔类型 true表示该目录存在
            boolean dirExsists = ftpClient.changeWorkingDirectory(basePath);
            //4.如果指定的目录不存在，则创建目录
            if(!dirExsists){
                //此方式，每次，只能创建一级目录
                boolean flag=ftpClient.makeDirectory(basePath);
                if (flag){
                    System.out.println("创建成功！");
                }
            }
        }
        //重新指定上传文件的路径
        ftpClient.changeWorkingDirectory(targetPath);
        //5.设置上传文件的方式
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        //使用uuid，保存文件名唯一性
        String uuid= UUID.randomUUID().toString();
        *//**
      * 6.执行上传
      * remote 上传服务后，文件的名称
      * local 文件输入流
      * 上传文件时，如果已经存在同名文件，会被覆盖
      *//*
        boolean uploadFlag = ftpClient.storeFile(uuid+suffix,inputStream);
        if(uploadFlag)
            System.out.println("上传成功！");
        return uuid+suffix;
    }*/
}
